home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CD ROM Paradise Collection 4
/
CD ROM Paradise Collection 4 1995 Nov.iso
/
filutil
/
mdf130.zip
/
MDFL130.ZIP
/
MDFL_ITA.DOC
< prev
next >
Wrap
Text File
|
1995-01-12
|
9KB
|
282 lines
MDFLIB
Versione 1.3
(C) 1994/95 Maurizio Giunti
Libreria C/C++ o Visual Basic che consente di applicare i files *.MDF
creati con versioni REGISTRATE di MDIFF/MDIFF2. Versioni Dos e OS/2
32bit. MDFLIB e' liberamente utilizzabile e non e' richiesto alcun
compenso o royalty. Chiunque puo' redistribuire MDFLIB a condizione che
non richieda alcuna somma di denaro in cambio, fatta eccezione per le
spese di copia e/o distribuzione che devono essere adeguatamente
documentate.
ATTENZIONE:
Le librerie fornite funzionano solo con files *.MDF prodotti con copie
REGISTRATE di MDIFF o MDIFF2.
0.INDICE
0.INDICE 2
1.CONDIZIONI D'USO 3
2.C++ 3
2.1.LA CLASSE MPATCH 3
2.2.TAVOLA DEGLI ERRORI 3
2.3.LETTURA DELL'HEADER 4
3.C 4
3.1 LETTURA DELL'HEADER 4
3.2.APPLICARE IL FILE 5
4.VISUAL BASIC 5
5.INDIRIZZO DELL'AUTORE 5
2
1.CONDIZIONI D'USO
Le librerie contenute in questo pacchetto sono pienamente funzionanti
soltanto su file *.MDF prodotti con una copia REGISTRATA di MDIFF, per
questo essi sono liberamente utilizzabili, inoltre il file MDFDLL.DLL e'
liberamente distribuibile anche inserito in un vostro programma.
Nessun compenso e' richiesto, queste librerie sono totalmente royalty
free.
2.C++
2.1.LA CLASSE MPATCH
Per utilizzare la classe MPatch non e' necessario sapere come opera o
cosa contiene, e' sufficiente capire come operano i suoi membri
pubblici.
MPatch()
E' il constructor, inizializza i dati privati. Non deve essere
modificato.
void SetRate(short r)
Cambia il rating di chiamata del metodo Show(). Vedi piu' avanti.
short MDFPatch(char *dif, char *old, char *new)
E' la funzione chiave, prende come parametri i nomi dei 3 files da
trattare: il file di differenza, il file di partenza e il nome del file
da produrre. Attenzione: old e new non devono puntare a stringhe uguali.
Se old o new contengono stringhe nulle ("\0") i nomi dei files vengono
presi dal file di differenza. La funzione ritorna 0 se tutto e' andato a
buon fine o un intero positivo in caso di errore.
char *LastError()
Se si e' verificato un errore nell'uso di MDFPatch(), LastError() ritorna
un puntatore ad una stringa che spiega l'errore che si e' verificato.
void Show_start()
void Show()
void Show_end()
Queste tre funzioni vengono utilizzate per visualizzare dei messaggi
durante l'applicazione della patch. La Show_start() viene richiamata nel
momento in cui la MDFPatch(), ultimati i controlli dei files su cui deve
lavorare, inizia ad applicare la patch. La Show_end() viene richiamata al
termine dell'operazione, mentre la Show() viene richiamata durante
l'esecuzione dell'operazione. Le volte in cui Show() viene richiamata
dipendono dal valore settato dalla funzione SetRate().Queste 3 funzioni
sono virtuali, quindi, per poterle adattare, e' necessario ereditare la
classe. Vedi anche SAMPLE.CPP.
2.2.TAVOLA DEGLI ERRORI
Ecco i codici di errore che puo' ritornare la funzione MDFPatch() e le
stringhe corrispondentemente riportate dalla LastError() (le virgolette
sono ovviamente escluse):
3
Codice Descrizione
0 "OK!"
"Out of memory !" 1
2 "Can't open MDF file !"
"Invalid MDF file !" 3
"MDF file version mismatch !" 4
"UNREGISTERED !" 5
6 "Bad or incorrect OLD file !"
"Can't open OLD file !" 7
"Can't create NEW file !" 8
"General failure: NEW file corrupted !" 9
"OLD and NEW can't be the same file !" 10
2.3.LETTURA DELL'HEADER
La funzione di lettura dell'header ha lo stesso funzionamento sia in C
che in C++, quindi sara' spiegata nel paragrafo 3.1.
3.C
3.1 LETTURA DELL'HEADER
Ogni file *.MDF contiene un header nel quale sono memorizzate alcune
informazioni fondamentali. Tali informazioni sono leggibili tramite la
funzione readMDFhead():
short readMDFhead(char *fn, struct MDF_header_info *hi)
Il parametro fn e' un puntatore alla stringa che contiene il nome e path
completo del file *.MDF da esplorare, mentre hi e' un puntatore alla
struttura che conterra' i dati letti. Tale struttura e' cosi' definita:
struct MDF_header_info {
char alg_ver[4];
char oldfilename[255];
char newfilename[255];
char registeredto[255];
char comment[2048];
unsigned long oldfilecrc;
short chunk_len;
unsigned long n_chunks;
};
Se la chiamata alla funzione ha esito positivo i campi conterranno:
alg_ver Versione dell'algoritmo utilizzato per creare il
file *.MDF
oldfilename Nome originale del file OLD
newfilename Nome originale del file NEW
registeredto Nome del proprietario della copia registrata di
MDIFF con il quale e' stato prodotto il file *.MDF
comment Commento
oldfilecrc Crc del file OLD
chunk_len Lunghezza del chunk
n_chunks Numero di chunks
4
La funzione ritorna:
0 MDF File non trovato
1 OK
-1 Il file indicato non e' un file di MDIFF
-2 Il file indicato non e' stato prodotto con la giusta
release di MDIFF
3.2.APPLICARE IL FILE
Il file *.MDF si applica semplicemente chiamando la funzione MDFPatch():
short MDFPatch(char *mfl,char *ofl,char *nfl)
I parametri sono nell'ordine i nomi del file MDF del file OLD e del file
NEW da creare.
I valori di ritorno della funzione possono essere interpretati grazie
alla tabella del capitolo 3.2, inoltre frazie alla funzione MDFError()
e' possibile ricevere un puntatore ad una stringa di spiegazione
dell'errore:
char *MDFError(short e)
L'unico parametro richiesto e' il numero dell'errore.
4.VISUAL BASIC
La DLL per Windows fornita e' richiamabile con semplicita' dal Visual
Basic: e' necessario in primo luogo dichiarare l'uso della DLL in un
modulo di dichiarazione globale con una espressione del tipo:
Declare Function MPATCH Lib "mdfdll.dll" Alias "@MPATCH$qnzct1t1" (ByVal
m As String, ByVal o As String, ByVal n As String) As Integer
Successivamente sara' possibile lanciare la funzione in conseguenza di un
determinato evento:
r% = MPATCH(fmdf$, fold$, fnew$)
Dove i parametri contengono rispettivamente il nome del file *.mdf, del
file OLD e del file NEW. Il valore di ritorno puo' essere interpretato
tramite la tabella del capitolo 2.2.
Attenzione: la dll MDFDLL.DLL deve trovarsi nel path o nella stessa
directory in cui si trova il programma eseguibile!
5.INDIRIZZO DELL'AUTORE
Per qualsiasi dubbio o perplessita', contattatemi:
Maurizio Giunti
Via G.B. Foggini, 24
50142 Firenze
Italy
E-Mail:
Fidonet: 2:332/102.3
Internet: giunti@stat.ds.unifi.it
5